/**
 * @author ChenJunhong
 * @date 2018/10/30
 * Description:
 *
 * 1、从第一个元素开始，分别与后面的元素向比较，找到最小的元素与第一个元素交换位置；
 *
 * 2、从第二个元素开始，分别与后面的元素相比较，找到剩余元素中最小的元素，与第二个元素交换；
 *
 * 3、重复上述步骤，直到所有的元素都排成由小到大为止。
 */
public class SelectionSort {
    public static void selSort1(int[] arr){
        // 从第i个开始，依次为最小索引
        for (int i = 0; i < arr.length; i++) {
            int minIndex = i;
            for (int j = minIndex + 1; j < arr.length; j++) {
                // 如果最小索引位置上的数字比第j个数字大，那么就交换这个两个数字
                if(arr[minIndex]>arr[j]){
                    swap(arr,j,minIndex);
                }
            }
        }
    }

    /**
     * 交换数组中的数据的位子
     * @param arr
     * @param x
     * @param y
     */
    public static void swap(int[] arr, int x, int y){
        int temp = arr[x];
        arr[x] = arr[y];
        arr[y] = temp;
    }

    public static void main(String[] args) {
        int[] arr = {89,54,15,25};
        selSort1(arr);
        for (int i : arr) {
            System.out.println(i);
        }
    }
}
